/**
 * 登录状态检查和跳转工具
 */

import authAPI from '@/api/modules/auth.js'

/**
 * 检查登录状态，未登录则跳转到登录页
 * @param {String} redirectUrl 登录成功后要跳转的页面路径
 * @returns {Boolean} 是否已登录
 */
export function checkLoginStatus(redirectUrl = '') {
  const isLoggedIn = authAPI.isLoggedIn()
  
  if (!isLoggedIn) {
    // 保存当前页面路径，登录成功后跳转回来
    if (redirectUrl) {
      uni.setStorageSync('login_redirect_url', redirectUrl)
    } else {
      // 获取当前页面路径
      const pages = getCurrentPages()
      if (pages.length > 0) {
        const currentPage = pages[pages.length - 1]
        const currentRoute = currentPage.route
        const currentOptions = currentPage.options
        
        // 构建完整的页面路径（包含参数）
        let fullPath = '/' + currentRoute
        if (currentOptions && Object.keys(currentOptions).length > 0) {
          const params = Object.keys(currentOptions)
            .map(key => `${key}=${currentOptions[key]}`)
            .join('&')
          fullPath += `?${params}`
        }
        
        uni.setStorageSync('login_redirect_url', fullPath)
      }
    }
    
    // 跳转到登录页
    uni.showToast({
      title: '请先登录',
      icon: 'none'
    })
    
    setTimeout(() => {
      uni.navigateTo({
        url: '/pages/login/index'
      })
    }, 1500)
    
    return false
  }
  
  return true
}

/**
 * 登录成功后的跳转处理
 */
export function handleLoginSuccess() {
  const redirectUrl = uni.getStorageSync('login_redirect_url')
  
  if (redirectUrl) {
    // 清除保存的跳转地址
    uni.removeStorageSync('login_redirect_url')
    
    // 跳转到原来要访问的页面
    if (redirectUrl.startsWith('/pages/')) {
      uni.reLaunch({
        url: redirectUrl
      })
    } else {
      // 默认跳转到首页
      uni.switchTab({
        url: '/pages/index/index'
      })
    }
  } else {
    // 没有保存的跳转地址，跳转到首页
    uni.switchTab({
      url: '/pages/index/index'
    })
  }
}

/**
 * 需要登录的页面列表
 */
export const LOGIN_REQUIRED_PAGES = [
  '/pages/orders/list',        // 我的订单
  '/pages/orders/detail',      // 订单详情
  '/pages/rent/apply',         // 租赁申请
  '/pages/profile/index',      // 个人中心
  '/pages/profile/device-manage',  // 设备管理
  '/pages/profile/device-upload',  // 上传设备
  '/pages/profile/device-edit',    // 编辑设备
  '/pages/profile/edit',       // 编辑资料
]

/**
 * 检查当前页面是否需要登录
 * @param {String} pagePath 页面路径
 * @returns {Boolean} 是否需要登录
 */
export function isLoginRequired(pagePath) {
  return LOGIN_REQUIRED_PAGES.some(path => pagePath.startsWith(path))
}

/**
 * 页面混入 - 自动检查登录状态
 */
export const loginCheckMixin = {
  onLoad() {
    // 获取当前页面路径
    const pages = getCurrentPages()
    if (pages.length > 0) {
      const currentPage = pages[pages.length - 1]
      const currentRoute = '/' + currentPage.route
      
      // 检查是否需要登录
      if (isLoginRequired(currentRoute)) {
        checkLoginStatus()
      }
    }
  }
}

/**
 * 在tabbar页面中使用的登录检查
 */
export function checkLoginForTabPage() {
  const isLoggedIn = authAPI.isLoggedIn()
  
  if (!isLoggedIn) {
    uni.showToast({
      title: '请先登录',
      icon: 'none'
    })
    
    setTimeout(() => {
      uni.navigateTo({
        url: '/pages/login/index'
      })
    }, 1500)
    
    return false
  }
  
  return true
} 